In a distributed computer system, in which multiple autonomous computers communicate via a computer network, clock synchronization is indispensable for the creation of a reliable and synchronous system. Clock synchronization deals with the understanding of temporal ordering of events produced by concurrent processes. The most common clock synchronization scheme is Network-time Protocol (NTP), which provides a layered client-server architecture based on User Datagram Protocol (UDP) message passing.
One major disadvantage of NTP/SNTP clock synchronization is its susceptibility to unpredictable time delay caused by network and system load. Typically, a NTP client-server synchronization request will be transmitted through various network and system elements. For example, a NTP client application generates the request, which is then transmitted by client system Socket/TCPIP (Transmission Control Protocol/Internet Protocol) layer, via a client Ethernet/WLAN interface, to an Ethernet/WLAN (Wide Local Area Network) network. The request is then received, via a server Ethernet/WLAN interface, by a server system Socket/TCPIP layer. The request is then processed by a NTP server application. The NTP server application then generates a response, which is then transmitted through the aforementioned interfaces and network/system elements, before received by the NTP client application. Each of the aforementioned network/system elements, interfaces, and processes add time delays to the measurement of difference between the server time and the client time. These time delays are largely unpredictable, yet they have to be accurately accounted for, for accurate measurement (and correction) of the time difference between the server and the client.
Conventionally, for clock synchronization, each node in a networked computer system may use a master-slave configuration to periodically generate and send a “heart beat” message. However, this method would cause network congestion due to the frequency of the “heart beat” messages. This network congestion would be further exacerbated when multiple servers receive and respond to these messages. Moreover, it is also undesirable to depend solely on designated servers for clock synchronization, since the clock synchronization can fail when the designated servers become unavailable.
Furthermore, in a conventional system, the global system time at a client device can be directly updated as a result of clock synchronization. However, directly updating the global system time would adversely affect system functionality. For example, if the global system time of the client device is updated as a result of clock synchronization, local client standard functions, such as local synchronized operations, can fail.